package com.ftg.learn.chapter08.homework01.homework03;

/**
 * 英雄类
 *
 * @author lijiaxin
 * @version 1.0
 * @date 2023/7/24 10:53
 */

import lombok.Data;
/**
 * （1）定义一个游戏中Hero 英雄的类，在该类中定义英雄的名字， 生命值和等级3 个属性，定义一个构造函数完成对生命值和等级的初始化，分别赋初值为100，1。同时实现名字的输入和英雄信息的输出。
 *
 * （2）在上一题的基础上，为英雄再定义拥有一个参数的构造方法，传入一个英雄类型的值，如果为1，则为普通英雄，生命值为100，如果该值为2，则为高级英雄，生命值初始化为200。
 *
 * （3）在上两英雄类型的基础上，为英雄添加一个基本战斗的方法， 该方法拥有一个英雄类型的参数，当传入另一个英雄时，能降低对方100 点血。 再增加一个绝招的重载方法，加入一个战斗类型参数，通过输入不同绝招参数，降低对方不同的血量。
 */


/**
 * name:英雄的名字
 * HealthValue：生命值
 * grade：等级
 */

@Data
public class Hero {

//   private String name;
//    int HealthValue;
//   int grade;
//    String type;
//
//    public Hero(String name,int HealthValue,int grade){
//        this.name=name;
//        this.HealthValue=HealthValue;
//        this.grade=grade;
//    }
//
//    public Hero(String type){
//        this.type=type;
//        types();
//    }
//
//    public void types(){
//        if(this.type=="1"){
//            this.setHealthValue(100);
//            this.setType("普通英雄");
//        }else if(this.type=="2"){
//            this.setHealthValue(200);
//            this.setType("高级英雄");
//        }
//
//    }


    private String name;

    private int hp;

    private int level;


    public Hero(String name) {
        this.setName(name);
        this.setHp(100);
        this.setLevel(1);
        this.info();
    }

    public Hero(String name,int h) {
        this.setName(name);
        this.setHp(h == 1? 100 : 200);
        this.setLevel(1);
        this.info();
    }

//    public Hero(String name,HeroTypeNew ht) {
//        this.setName(name);
//        switch (ht){
//            case 普通英雄:
//                this.setHp(100);
//                break;
//            case 高级英雄:
//                this.setHp(200);
//                break;
//            default:
//                this.setHp(300);
//        }
//        this.setLevel(1);
//        this.info();
//    }

    public Hero(String name,HeroTypeNew ht) {
        this.setName(name);
        switch (ht){
            case type1:
                this.setHp(100);
                break;
            case type2:
                this.setHp(200);
                break;
            default:
                this.setHp(300);
        }
        this.setLevel(1);
        this.info();
    }

    /**
     * 英雄的信息
     */
    public void info() {
        System.out.printf("英雄%s,等级%d,血量%d", this.getName(), this.getLevel(), this.getHp());
    }

}
